<template>
    <div>
      <router-link
        class="header-abs"
        tag="div"
        to="/"
        v-show="showAbs"
      >
        <span class="iconfont header-back-icon">&#xe624;</span>
      </router-link>
      <div
        class="header-fixed"
        v-show="!showAbs"
        :style="opacityStyle"
      >
        <router-link to="/"><span class="iconfont header-fixed-icon">&#xe624;</span></router-link>
        景点详情
      </div>
    </div>
</template>

<script>
export default {
  name: 'Header',
  data () {
    return {
      showAbs: true,
      opacityStyle: {
        opacity: 0
      }
    }
  },
  methods: {
    handleScroll () {
      const top = document.documentElement.scrollTop
      if (top > 60) {
        this.showAbs = false
        let opacity = top / 140
        opacity = opacity > 1 ? 1 : opacity
        this.opacityStyle = {
          opacity
        }
      } else {
        this.showAbs = true
      }
    }
  },
  activated () {
    window.addEventListener('scroll', this.handleScroll)
  },
  // 页面即将被隐藏或替换成新页面的时候这个生命周期钩子会执行
  // 对全局事件进行一个解绑，因为现在是在 window 上绑定的 scroll 事件，这也就是说就算在其他页面（组件），这个事件还是能被触发，现在只想让这个事件在 detail 页面（组件）上被触发
  // 所以在页面切换的时候进行一个解绑
  deactivated () {
    window.removeEventListener('scroll', this.handleScroll)
  }
}
</script>

<style scoped lang="stylus">
  @import "~styles/varibles.styl"
  .header-abs
    position absolute
    left .2rem
    top .2rem
    width .8rem
    height .8rem
    border-radius 50%
    background-color rgba(0,0,0,.6)
    text-align center
    line-height .8rem
    .header-back-icon
      color #ffffff
      font-size .4rem
  .header-fixed
    height $headerHeight
    line-height $headerHeight
    text-align center
    color #ffffff
    background-color $bgColor
    font-size .32rem
    position fixed
    top 0
    left 0
    right 0
    z-index 3
    .header-fixed-icon
      position absolute
      top 0
      left 0
      width .64rem
      font-size .4rem
      text-align center
      color #ffffff
</style>
